const utils = {

  /**
   * 文件下载
   * @param content|string 文件路径或内容
   * @param fileName|string 文件名称.格式
   */
  download: function (content, fileName = "") {
    var aEle = document.createElement("a"); // 创建a标签
    var blob = new Blob([content]);
    aEle.download = fileName; // 设置下载文件的文件名
    aEle.href = URL.createObjectURL(blob);
    // aEle.href = content;// content为后台返回的下载地址
    aEle.click();
  },

  /**
   * local session保存
   * @param string type 类型 local->本地存储 session->session存储
   * @param string key 存储的key值
   * @param object|string|number val 存储的value值 
   */
  setStorage: function (type, key, val) {
    val = encodeURIComponent(JSON.stringify(val));
    switch (type) {
      case 'local':
        localStorage.setItem(key, val);
        break;
      case 'session':
        sessionStorage.setItem(key, val);
        break;
      default:
        alert('参数错误');
        break;
    }
  },

  /**
   * local session取值
   * @param string type 类型 local->本地存储 session->session存储
   * @param string key 存储的key值
   */
  getStorage: function (type, key) {
    var val = null;
    switch (type) {
      case 'local':
        val = localStorage.getItem(key);
        break;
      case 'session':
        val = sessionStorage.getItem(key);
        break;
      default:
        alert('参数错误');
        break;
    }
    if (val !== null && val !== "undefined") {
      return JSON.parse(decodeURIComponent(val));
    } else {
      return null;
    }
  },

  /**
   * local session删除
   * @param string type 类型 local->本地存储 session->session存储
   * @param string key 存储的key值
   */
  delStorage: function (type, key) {
    switch (type) {
      case 'local':
        localStorage.removeItem(key);
        break;
      case 'session':
        sessionStorage.removeItem(key);
        break;
      default:
        alert('参数错误');
        break;
    }
  },

  /**
   * local session清除所有存储的值
   * @param string type 类型 local->本地存储 session->session存储 all->两种都清除
   */
  clearStorage: function (type) {
    switch (type) {
      case 'local':
        localStorage.clear();
        break;
      case 'session':
        sessionStorage.clear();
        break;
      case 'all':
        localStorage.clear();
        sessionStorage.clear();
        break;
      default:
        alert('参数错误');
        break;
    }
  },

  /**
   * cookie保存
   * @param string cname 类型 cookie->本地存储
   * @param string cvalue 存储的key值
   * @param number exdays 存储的时间/天 
   */
  setCookie: function (cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); //天
    var expires = "expires=" + d.toGMTString(); //path=/jyShop 是path 路径 设置时一定要设置路径----坑
    var cvalueString = JSON.stringify(cvalue)
    var encodeURIC = escape("" + cvalueString + ""); //解决编码格式   unescape()解码
    document.cookie = cname + "=" + encodeURIC + "; " + expires;
  },

  /**
   * cookie取值
   * @param string cname 类型 cookie->本地存储
   */
  getCookie: function (cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
      var c = ca[i].trim();
      if (c.indexOf(name) === 0) {
        var ctn = unescape(c.substring(name.length, c.length))
        return JSON.parse(ctn)
      };
    }
    return "";
  },

  /**
   * cookie删除
   * @param string cname 类型 cookie->本地存储
   */
  delCookie: function (cname) {
    this.setCookie(cname, "", -1);
  }
}

export default utils